地图标注

最后更新时间:2020年12月8日

地图标注主要通过API程序包com.zondy.mapgis.map.view.annotation的Annotation类接口实现,通过AnnotationsOverlay.addAnnotation()方法将标注添加到地图视图中。

1 添加固定点标注 Sample详情

添加固定点标注,即已知要标注点的位置信息与其他属性,可以直接在程序中处理并添加,在地图上叠加显示标注点。

//位图:作为标注的图标
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.mipmap.annotation);
//坐标点:作为标注位置
Dot position = new Dot(12735810,3563516);
//实例化标注对象(参数:名称、描述、位置点、图标)
Annotation annotation = new Annotation("MyAnnotation", "地图标注", position, bmp);
//获取地图容器的标注图层,并向其中添加标注
mapView.getAnnotationsOverlay().addAnnotation(annotation);
//刷新地图
mapView.refresh();

2 交互添加标注 Sample详情

交互添加标注,即通过用户交互操作(如单击、双击、长按等)获取位置点来添加标注。交互添加标注实现的方法与添加固定点标注的方法唯一不同的是位置点的获取途径,其他完全一致,实现思路如下:

(1) 注册手势事件监听:添加交互操作的事件监听,如本文中采用单击手势监听,通过setTapListener注册;

(2) 捕获、转换坐标:在单击事件监听的回调方法中捕获当前操作的屏幕坐标点,转换为地图坐标。

(3) 添加标注:根据捕获到的单击坐标点等信息创建标注对象,添加到标注图层中绘制显示。

具体实现代码如下所示:

//实例化地图单击事件监听器
MapViewTapListener mapViewTapListener=new MapViewTapListener() {
    @Override
    public void mapViewTap(PointF pointF) {
        //将视图坐标转换成地图坐标
        Dot point = mapView.viewPointToMapPoint(pointF);
        //构造字符串:表示标注点地图坐标
        String strDeString = String.format("X = %f,Y = %f", point.getX(), point.getY());
        //创建地图标注对象
        Annotation annotation=new Annotation("标注", strDeString, point, bmp);
        //向地图标注图层中添加标注
        mapView.getAnnotationsOverlay().addAnnotation(annotation);
        mapView.refresh();
    }
};
//为地图视图对象设置单击事件监听器
mapView.setTapListener(mapViewTapListener);

代码说明:通过地图的手势操作,在其事件监听中捕捉到的坐标为屏幕坐标,要将其转换为地图坐标后使用。

地图标注展示效果如下:

地图标注.jpg